/**
* 显示消息提示框
* @param content 提示的标题
*/
export function toast(content) {
  uni.showToast({
    icon: 'none',
    title: content
  })
}

/**
* 显示模态弹窗
* @param content 提示的标题
*/
export function showConfirm(content) {
  return new Promise((resolve, reject) => {
    uni.showModal({
      title: '提示',
      content: content,
      cancelText: '取消',
      confirmText: '确定',
      success: function(res) {
        resolve(res)
      }
    })
  })
}

/**
* 参数处理
* @param params 参数
*/
export function tansParams(params) {
  let result = ''
  for (const propName of Object.keys(params)) {
    const value = params[propName]
    var part = encodeURIComponent(propName) + "="
    if (value !== null && value !== "" && typeof (value) !== "undefined") {
      if (typeof value === 'object') {
        for (const key of Object.keys(value)) {
          if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') {
            let params = propName + '[' + key + ']'
            var subPart = encodeURIComponent(params) + "="
            result += subPart + encodeURIComponent(value[key]) + "&"
          }
        }
      } else {
        result += part + encodeURIComponent(value) + "&"
      }
    }
  }
  return result
}

//  根据后台返回的二进制流转换为图片
export function toBase64(data,type) {
  return new Promise((resolve, reject) => {
  	const arrayBuffer = new Uint8Array([data])
  	const base64 = uni.arrayBufferToBase64(arrayBuffer)
  	resolve(base64)
  })
}

// 缓存函数，设置或获取缓存值，带有过期时间戳
// key: 缓存的键名，必填
// value: 缓存的值，选填，如果为空则表示获取缓存，如果不为空则表示设置缓存
// seconds: 缓存的过期时间，单位为秒，选填，默认为28天
export function cache(key, value, seconds) {
  // 获取当前时间戳，单位为秒
  const timestamp = Date.parse(new Date()) / 1000;
  console.log(`${timestamp}===${key}`);
  // 如果key为空，直接返回
  if (!key) {
    console.log("key不能空");
    return;
  }
  // 如果value为空，表示获取缓存
  if (value === null) {
    // 获取缓存值，并按照"|"分割成数组
    const val = uni.getStorageSync(key);
    const tmp = val.split("|");
    // 如果数组的第二个元素不存在或者小于等于当前时间戳，表示缓存已过期，删除缓存并返回空字符串
    if (!tmp[1] || timestamp >= tmp[1]) {
      console.log("key已失效");
      uni.removeStorageSync(key);
      return "";
    }
    // 否则表示缓存未过期，返回数组的第一个元素，即缓存值
    else {
      console.log("key未失效");
      return tmp[0];
    }
  }
  // 如果value不为空，表示设置缓存
  else {
    // 如果seconds为空，则使用默认值28天，否则使用传入的值
    const expire = seconds ? timestamp + seconds : timestamp + 3600 * 24 * 28;
    // 将缓存值和过期时间戳用"|"连接成一个字符串，并存入缓存
    value = `${value}|${expire}`;
    uni.setStorageSync(key, value);
  }
}